package com.von.nhcf.util;

import com.von.nhcf.constant.NhcfConstant;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * 对字符串进行各种加密的工具类
 */
public class EncryptUtil {
    /**
     * md5加密明文
     * @param plaintext
     * @return md5加密后的密文
     */
    public static String md5Encrypt(String plaintext) {
        // 判断明文是否有效
        if (plaintext == null || plaintext.length() == 0) {
            throw new RuntimeException(NhcfConstant.MESSAGE_STRING_INVALIDATE);
        }
        // 创建密文变量
        String ciphertext = null;
        try {
            // 获取 MessageDigest 对象
            String encryptAlgorithm = "md5";
            MessageDigest messageDigest = MessageDigest.getInstance(encryptAlgorithm);
            // 获取明文字符串对应的字节数组
            byte[] input = plaintext.getBytes();
            // 执行加密
            byte[] output = messageDigest.digest(input);
            // 创建 BigInteger 对象
            int signum = 1;
            BigInteger bigInteger = new BigInteger(signum, output);
            // 按照 16 进制将 bigInteger 的值转换为字符串
            int radix = 16;
            ciphertext = bigInteger.toString(radix).toUpperCase();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

        return ciphertext;
    }
}
